home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
X User Tools
/
X User Tools (O'Reilly and Associates)(1994).ISO
/
sun4c
/
archive
/
tcltk.z
/
tcltk
/
man
/
cat3
/
CrtPipelin.3
< prev
next >
Wrap
Text File
|
1994-09-20
|
9KB
|
199 lines
Tcl_CreatePipeline(3)Tcl Library Procedures
_________________________________________________________________
NAME
Tcl_CreatePipeline - create one or more child processes,
with I/O redirection
SYNOPSIS
#include <tcl.h>
int
Tcl_CreatePipeline(_i_n_t_e_r_p, _a_r_g_c, _a_r_g_v, _p_i_d_A_r_r_a_y_P_t_r, _i_n_P_i_p_e_P_t_r, _o_u_t_P_i_p_e_P_t_r, _e_r_r_F_i_l_e_P_t_r)
ARGUMENTS
Tcl_Interp *_i_n_t_e_r_p (in) Interpreter to use
for error reporting.
int _a_r_g_c (in) Number of strings in
_a_r_g_v array.
char **_a_r_g_v (in) Array of strings
describing command(s)
and I/O redirection.
int **_p_i_d_A_r_r_a_y_P_t_r (out) The value at *_p_i_d_A_r_-
_r_a_y_P_t_r is modified to
hold a pointer to an
array of process
identifiers. The
array is dynamically
allocated and must be
freed by the caller.
int *_i_n_P_i_p_e_P_t_r (out) If this argument is
NULL then standard
input for the first
command in the pipe-
line comes from the
current standard
input. If _i_n_P_i_p_e_P_t_r
is not NULL then
Tcl_CreatePipeline
will create a pipe,
arrange for it to be
used for standard
input to the first
command, and store a
file id for writing
to that pipe at
*_i_n_P_i_p_e_P_t_r. If the
command specified its
own input using
redirection, then no
Tcl 1
Tcl_CreatePipeline(3)Tcl Library Procedures
pipe is created and
-1 is stored at
*_i_n_P_i_p_e_P_t_r.
int *_o_u_t_P_i_p_e_P_t_r (out) If this argument is
NULL then standard
output for the last
command in the pipe-
line goes to the
current standard out-
put. If _o_u_t_P_i_p_e_P_t_r
is not NULL then
Tcl_CreatePipeline
will create a pipe,
arrange for it to be
used for standard
output from the last
command, and store a
file id for reading
from that pipe at
*_o_u_t_P_i_p_e_P_t_r. If the
command specified its
own output using
redirection then no
pipe is created and
-1 is stored at *_o_u_t_-
_P_i_p_e_P_t_r.
int *_e_r_r_F_i_l_e_P_t_r (out) If this argument is
NULL then error out-
put for all the com-
mands in the pipeline
will go to the
current standard
error file. If
_e_r_r_F_i_l_e_P_t_r is not
NULL, error output
from all the commands
in the pipeline will
go to a temporary
file created by
Tcl_CreatePipeline.
A file id to read
from that file will
be stored at
*_e_r_r_F_i_l_e_P_t_r. The
file will already
have been removed, so
closing the file
descriptor at
*_e_r_r_F_i_l_e_P_t_r will
cause the file to be
Tcl 2
Tcl_CreatePipeline(3)Tcl Library Procedures
flushed completely.
_________________________________________________________________
DESCRIPTION
Tcl_CreatePipeline processes the _a_r_g_v array and sets up one
or more child processes in a pipeline configuration.
Tcl_CreatePipeline handles pipes specified with ``|'', input
redirection specified with ``<'' or ``<<'', and output
redirection specified with ``>''; see the documentation for
the exec command for details on these specifications. The
return value from Tcl_CreatePipeline is a count of the
number of child processes created; the process identifiers
for those processes are stored in a _m_a_l_l_o_c-ed array and a
pointer to that array is stored at *_p_i_d_A_r_r_a_y_P_t_r. It is the
caller's responsibility to free the array when finished with
it.
If the _i_n_P_i_p_e_P_t_r, _o_u_t_P_i_p_e_P_t_r, and _e_r_r_F_i_l_e_P_t_r arguments are
NULL then the pipeline's standard input, standard output,
and standard error are taken from the corresponding streams
of the process. Non-NULL values may be specified for these
arguments to use pipes for standard input and standard out-
put and a file for standard error. Tcl_CreatePipeline will
create the requested pipes or file and return file identif-
iers that may be used to read or write them. It is the
caller's responsibility to close all of these files when
they are no longer needed. If _a_r_g_v specifies redirection
for standard input or standard output, then pipes will not
be created even if requested by the _i_n_P_i_p_e_P_t_r and _o_u_t_P_i_p_e_P_t_r
arguments.
If an error occurs in Tcl_CreatePipeline (e.g. ``|'' or
``<'' was the last argument in _a_r_g_v, or it wasn't possible
to fork off a child), then -1 is returned and _i_n_t_e_r_p->_r_e_s_u_l_t
is set to an error message.
SEE ALSO
Tcl_DetachPids, Tcl_ReapDetachedProcs
KEYWORDS
background, child, detach, fork, process, status, wait
Tcl 3